%------------------------------------------------------------------------------
% File     : ALG003^0 : TPTP v9.0.0. Bugfixed v5.2.0.
% Domain   : Algebra
% Axioms   : Untyped lambda sigma calculus
% Version  : [Bro09] axioms.
% English  :

% Refs     : [DHK95] Dowek et al. (1995), Higher-order Unification via Expl
%          : [Zha08] Zhang (2008), Using LEO-II to Prove Properties of an E
%          : [Ben09] Benzmueller (2009), Email to Geoff Sutcliffe
%          : [Bro09] Brown (2009), M-Set Models
% Source   : [Ben09]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :  237 ( 113 unt; 124 typ; 113 def)
%            Number of atoms       : 1217 ( 161 equ;   0 cnn)
%            Maximal formula atoms :    1 (   5 avg)
%            Number of connectives : 1942 (   6   ~;   0   |;   4   &; 916   @)
%                                         (   2 <=>;1014  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    1 (   1 avg; 916 nst)
%            Number of types       :    3 (   2 usr)
%            Number of type conns  :  128 ( 128   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :  123 ( 122 usr; 111 con; 0-4 aty)
%            Number of variables   :  327 (  39   ^ 283   !;   5   ?; 327   :)
% SPC      : 

% Comments :
% Bugfixes : v5.2.0 - Added missing type declarations.
%------------------------------------------------------------------------------
thf(term_type,type,
    term: $tType ).

thf(subst_type,type,
    subst: $tType ).

thf(one_type,type,
    one: term ).

thf(ap_type,type,
    ap: term > term > term ).

thf(lam_type,type,
    lam: term > term ).

thf(sub_type,type,
    sub: term > subst > term ).

thf(id_type,type,
    id: subst ).

thf(sh_type,type,
    sh: subst ).

thf(push_type,type,
    push: term > subst > subst ).

thf(comp_type,type,
    comp: subst > subst > subst ).

thf(var_type,type,
    var: term > $o ).

thf(pushprop_lem1v2_type,type,
    pushprop_lem1v2: $o ).

thf(pushprop_lem1_gthm_type,type,
    pushprop_lem1_gthm: $o ).

thf(axmap_type,type,
    axmap: $o ).

thf(pushprop_lem0_gthm_type,type,
    pushprop_lem0_gthm: $o ).

thf(shinj_type,type,
    shinj: $o ).

thf(hoasinduction_lem1v2_type,type,
    hoasinduction_lem1v2: $o ).

thf(hoasinduction_lem1v2_gthm_type,type,
    hoasinduction_lem1v2_gthm: $o ).

thf(hoasap_type,type,
    hoasap: subst > term > subst > term > term ).

thf(induction2lem_type,type,
    induction2lem: $o ).

thf(hoasinduction_lem3v2_f_type,type,
    hoasinduction_lem3v2_f: $o ).

thf(axvarshift_type,type,
    axvarshift: $o ).

thf(hoasapinj2_type,type,
    hoasapinj2: $o ).

thf(hoasapnotvar_gthm_type,type,
    hoasapnotvar_gthm: $o ).

thf(hoasapinj1_type,type,
    hoasapinj1: $o ).

thf(ulamvar1_type,type,
    ulamvar1: $o ).

thf(induction2lem_lthm_type,type,
    induction2lem_lthm: $o ).

thf(hoasinduction_lem3v2_gthm_type,type,
    hoasinduction_lem3v2_gthm: $o ).

thf(apnotvar_type,type,
    apnotvar: $o ).

thf(pushprop_lthm_orig_type,type,
    pushprop_lthm_orig: $o ).

thf(hoasinduction_lem3v2_f_lthm_type,type,
    hoasinduction_lem3v2_f_lthm: $o ).

thf(hoasinduction_lthm_type,type,
    hoasinduction_lthm: $o ).

thf(hoasinduction_no_psi_cond_lthm_type,type,
    hoasinduction_no_psi_cond_lthm: $o ).

thf(hoaslaminj_type,type,
    hoaslaminj: $o ).

thf(hoasinduction_lem3aaa_type,type,
    hoasinduction_lem3aaa: $o ).

thf(induction2lem_gthm_type,type,
    induction2lem_gthm: $o ).

thf(hoasinduction_lem3aa_lthm_type,type,
    hoasinduction_lem3aa_lthm: $o ).

thf(hoasinduction_lem3_type,type,
    hoasinduction_lem3: $o ).

thf(hoasinduction_lem2_type,type,
    hoasinduction_lem2: $o ).

thf(termmset_lthm_type,type,
    termmset_lthm: $o ).

thf(hoasinduction_lem1_type,type,
    hoasinduction_lem1: $o ).

thf(hoaslamnotap_lthm_type,type,
    hoaslamnotap_lthm: $o ).

thf(pushprop_lem1v2_lthm_type,type,
    pushprop_lem1v2_lthm: $o ).

thf(hoasapnotvar_type,type,
    hoasapnotvar: $o ).

thf(hoasinduction_lem0_type,type,
    hoasinduction_lem0: $o ).

thf(hoasinduction_type,type,
    hoasinduction: $o ).

thf(hoasinduction_gthm_type,type,
    hoasinduction_gthm: $o ).

thf(axapp_type,type,
    axapp: $o ).

thf(hoaslamnotvar_lthm_type,type,
    hoaslamnotvar_lthm: $o ).

thf(pushprop_lem3v2_lthm_type,type,
    pushprop_lem3v2_lthm: $o ).

thf(hoasinduction_lem3b_lthm_type,type,
    hoasinduction_lem3b_lthm: $o ).

thf(ulamvarind_type,type,
    ulamvarind: $o ).

thf(induction_type,type,
    induction: $o ).

thf(hoasinduction_lem3a_lthm_type,type,
    hoasinduction_lem3a_lthm: $o ).

thf(termmset_gthm_type,type,
    termmset_gthm: $o ).

thf(hoasinduction_lem3aa_type,type,
    hoasinduction_lem3aa: $o ).

thf(pushprop_lem1v2_gthm_type,type,
    pushprop_lem1v2_gthm: $o ).

thf(hoaslamnotap_gthm_type,type,
    hoaslamnotap_gthm: $o ).

thf(hoaslamnotvar_gthm_type,type,
    hoaslamnotvar_gthm: $o ).

thf(hoasinduction_lem3b_gthm_type,type,
    hoasinduction_lem3b_gthm: $o ).

thf(pushprop_lem2v2_type,type,
    pushprop_lem2v2: $o ).

thf(hoasinduction_lem3a_gthm_type,type,
    hoasinduction_lem3a_gthm: $o ).

thf(axclos_type,type,
    axclos: $o ).

thf(axassoc_type,type,
    axassoc: $o ).

thf(hoasinduction_lem2v2_type,type,
    hoasinduction_lem2v2: $o ).

thf(pushprop_lthm_type,type,
    pushprop_lthm: $o ).

thf(apinj2_type,type,
    apinj2: $o ).

thf(apinj1_type,type,
    apinj1: $o ).

thf(hoasapinj2_lthm_type,type,
    hoasapinj2_lthm: $o ).

thf(hoasinduction_lem3v2a_type,type,
    hoasinduction_lem3v2a: $o ).

thf(hoasapinj1_lthm_type,type,
    hoasapinj1_lthm: $o ).

thf(hoaslaminj_lthm_type,type,
    hoaslaminj_lthm: $o ).

thf(axvarcons_type,type,
    axvarcons: $o ).

thf(hoaslam_type,type,
    hoaslam: subst > ( subst > term > term ) > term ).

thf(axscons_type,type,
    axscons: $o ).

thf(hoasinduction_lem2v2_gthm_type,type,
    hoasinduction_lem2v2_gthm: $o ).

thf(axidr_type,type,
    axidr: $o ).

thf(pushprop_lem1_type,type,
    pushprop_lem1: $o ).

thf(laminj_type,type,
    laminj: $o ).

thf(hoasinduction_lem3_lthm_type,type,
    hoasinduction_lem3_lthm: $o ).

thf(pushprop_lem0_type,type,
    pushprop_lem0: $o ).

thf(pushprop_gthm_type,type,
    pushprop_gthm: $o ).

thf(axabs_type,type,
    axabs: $o ).

thf(hoasinduction_lem3v2a_lthm_type,type,
    hoasinduction_lem3v2a_lthm: $o ).

thf(hoasinduction_lem2_lthm_type,type,
    hoasinduction_lem2_lthm: $o ).

thf(hoasapinj2_gthm_type,type,
    hoasapinj2_gthm: $o ).

thf(hoasinduction_p_and_p_prime_type,type,
    hoasinduction_p_and_p_prime: ( subst > term > subst > $o ) > ( term > $o ) > $o ).

thf(hoasinduction_lem1_lthm_type,type,
    hoasinduction_lem1_lthm: $o ).

thf(lamnotap_type,type,
    lamnotap: $o ).

thf(hoasapinj1_gthm_type,type,
    hoasapinj1_gthm: $o ).

thf(hoaslamnotvar_type,type,
    hoaslamnotvar: $o ).

thf(axidl_type,type,
    axidl: $o ).

thf(hoaslaminj_gthm_type,type,
    hoaslaminj_gthm: $o ).

thf(induction2_lthm_type,type,
    induction2_lthm: $o ).

thf(hoasinduction_lem0_lthm_type,type,
    hoasinduction_lem0_lthm: $o ).

thf(substmonoid_lthm_type,type,
    substmonoid_lthm: $o ).

thf(pushprop_type,type,
    pushprop: $o ).

thf(hoasinduction_lem3_gthm_type,type,
    hoasinduction_lem3_gthm: $o ).

thf(hoasinduction_lem2_gthm_type,type,
    hoasinduction_lem2_gthm: $o ).

thf(hoasinduction_lem3b_type,type,
    hoasinduction_lem3b: $o ).

thf(substmonoid_type,type,
    substmonoid: $o ).

thf(lamnotvar_type,type,
    lamnotvar: $o ).

thf(hoasinduction_lem3a_type,type,
    hoasinduction_lem3a: $o ).

thf(hoasinduction_lem1_gthm_type,type,
    hoasinduction_lem1_gthm: $o ).

thf(hoasinduction_no_psi_cond_type,type,
    hoasinduction_no_psi_cond: $o ).

thf(induction2_gthm_type,type,
    induction2_gthm: $o ).

thf(pushprop_lem2v2_lthm_type,type,
    pushprop_lem2v2_lthm: $o ).

thf(hoasvar_type,type,
    hoasvar: subst > term > subst > $o ).

thf(hoaslamnotap_type,type,
    hoaslamnotap: $o ).

thf(substmonoid_gthm_type,type,
    substmonoid_gthm: $o ).

thf(ulamvarsh_type,type,
    ulamvarsh: $o ).

thf(induction2_type,type,
    induction2: $o ).

thf(pushprop_lem3v2_type,type,
    pushprop_lem3v2: $o ).

thf(pushprop_lem2v2_gthm_type,type,
    pushprop_lem2v2_gthm: $o ).

thf(pushprop_lem1_lthm_type,type,
    pushprop_lem1_lthm: $o ).

thf(hoasinduction_lem3v2_type,type,
    hoasinduction_lem3v2: $o ).

thf(axshiftcons_type,type,
    axshiftcons: $o ).

thf(termmset_type,type,
    termmset: $o ).

thf(pushprop_lem0_lthm_type,type,
    pushprop_lem0_lthm: $o ).

thf(hoasapnotvar_lthm_type,type,
    hoasapnotvar_lthm: $o ).

thf(hoasinduction_lem3v2_lthm_type,type,
    hoasinduction_lem3v2_lthm: $o ).

thf(pushprop_p_and_p_prime_type,type,
    pushprop_p_and_p_prime: term > subst > ( term > $o ) > ( term > $o ) > $o ).

thf(axvarid_type,type,
    axvarid: $o ).

thf(hoasinduction_lthm_3_type,type,
    hoasinduction_lthm_3: $o ).

thf(axapp,definition,
    ( axapp
    = ( ! [A: term,B: term,M: subst] :
          ( ( sub @ ( ap @ A @ B ) @ M )
          = ( ap @ ( sub @ A @ M ) @ ( sub @ B @ M ) ) ) ) ) ).

thf(axvarcons,definition,
    ( axvarcons
    = ( ! [A: term,M: subst] :
          ( ( sub @ one @ ( push @ A @ M ) )
          = A ) ) ) ).

thf(axvarid,definition,
    ( axvarid
    = ( ! [A: term] :
          ( ( sub @ A @ id )
          = A ) ) ) ).

thf(axabs,definition,
    ( axabs
    = ( ! [A: term,M: subst] :
          ( ( sub @ ( lam @ A ) @ M )
          = ( lam @ ( sub @ A @ ( push @ one @ ( comp @ M @ sh ) ) ) ) ) ) ) ).

thf(axclos,definition,
    ( axclos
    = ( ! [A: term,M: subst,N: subst] :
          ( ( sub @ ( sub @ A @ M ) @ N )
          = ( sub @ A @ ( comp @ M @ N ) ) ) ) ) ).

thf(axidl,definition,
    ( axidl
    = ( ! [M: subst] :
          ( ( comp @ id @ M )
          = M ) ) ) ).

thf(axshiftcons,definition,
    ( axshiftcons
    = ( ! [A: term,M: subst] :
          ( ( comp @ sh @ ( push @ A @ M ) )
          = M ) ) ) ).

thf(axassoc,definition,
    ( axassoc
    = ( ! [M: subst,N: subst,K: subst] :
          ( ( comp @ ( comp @ M @ N ) @ K )
          = ( comp @ M @ ( comp @ N @ K ) ) ) ) ) ).

thf(axmap,definition,
    ( axmap
    = ( ! [A: term,M: subst,N: subst] :
          ( ( comp @ ( push @ A @ M ) @ N )
          = ( push @ ( sub @ A @ N ) @ ( comp @ M @ N ) ) ) ) ) ).

thf(axidr,definition,
    ( axidr
    = ( ! [M: subst] :
          ( ( comp @ M @ id )
          = M ) ) ) ).

thf(axvarshift,definition,
    ( axvarshift
    = ( ( push @ one @ sh )
      = id ) ) ).

thf(axscons,definition,
    ( axscons
    = ( ! [M: subst] :
          ( ( push @ ( sub @ one @ M ) @ ( comp @ sh @ M ) )
          = M ) ) ) ).

thf(ulamvar1,definition,
    ( ulamvar1
    = ( var @ one ) ) ).

thf(ulamvarsh,definition,
    ( ulamvarsh
    = ( ! [A: term] :
          ( ( var @ A )
         => ( var @ ( sub @ A @ sh ) ) ) ) ) ).

thf(ulamvarind,definition,
    ( ulamvarind
    = ( ! [P: term > $o] :
          ( ( P @ one )
         => ( ! [A: term] :
                ( ( var @ A )
               => ( ( P @ A )
                 => ( P @ ( sub @ A @ sh ) ) ) )
           => ! [A: term] :
                ( ( var @ A )
               => ( P @ A ) ) ) ) ) ) ).

thf(apinj1,definition,
    ( apinj1
    = ( ! [A: term,B: term,C: term,D: term] :
          ( ( ( ap @ A @ C )
            = ( ap @ B @ D ) )
         => ( A = B ) ) ) ) ).

thf(apinj2,definition,
    ( apinj2
    = ( ! [A: term,B: term,C: term,D: term] :
          ( ( ( ap @ A @ C )
            = ( ap @ B @ D ) )
         => ( C = D ) ) ) ) ).

thf(laminj,definition,
    ( laminj
    = ( ! [A: term,B: term] :
          ( ( ( lam @ A )
            = ( lam @ B ) )
         => ( A = B ) ) ) ) ).

thf(shinj,definition,
    ( shinj
    = ( ! [A: term,B: term] :
          ( ( ( sub @ A @ sh )
            = ( sub @ B @ sh ) )
         => ( A = B ) ) ) ) ).

thf(lamnotap,definition,
    ( lamnotap
    = ( ! [A: term,B: term,C: term] :
          ( ( lam @ A )
         != ( ap @ B @ C ) ) ) ) ).

thf(apnotvar,definition,
    ( apnotvar
    = ( ! [A: term,B: term] :
          ~ ( var @ ( ap @ A @ B ) ) ) ) ).

thf(lamnotvar,definition,
    ( lamnotvar
    = ( ! [A: term] :
          ~ ( var @ ( lam @ A ) ) ) ) ).

thf(induction,definition,
    ( induction
    = ( ! [P: term > $o] :
          ( ! [A: term] :
              ( ( var @ A )
             => ( P @ A ) )
         => ( ! [A: term,B: term] :
                ( ( P @ A )
               => ( ( P @ B )
                 => ( P @ ( ap @ A @ B ) ) ) )
           => ( ! [A: term] :
                  ( ( P @ A )
                 => ( P @ ( lam @ A ) ) )
             => ! [A: term] : ( P @ A ) ) ) ) ) ) ).

thf(pushprop_p_and_p_prime,definition,
    ( pushprop_p_and_p_prime
    = ( ^ [A: term,M: subst,P: term > $o,Q: term > $o] :
        ! [X: term] :
          ( ( Q @ X )
        <=> ( P @ ( sub @ X @ ( push @ A @ M ) ) ) ) ) ) ).

thf(pushprop_lem0,definition,
    ( pushprop_lem0
    = ( ! [P: term > $o,A: term,M: subst] :
        ? [Q: term > $o] : ( pushprop_p_and_p_prime @ A @ M @ P @ Q ) ) ) ).

thf(pushprop_lem0_gthm,definition,
    ( pushprop_lem0_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => pushprop_lem0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(pushprop_lem0_lthm,definition,
    pushprop_lem0_lthm = pushprop_lem0 ).

thf(pushprop_lem1,definition,
    ( pushprop_lem1
    = ( ! [P: term > $o,K: term > $o,A: term,M: subst,B: term] :
          ( ( P @ A )
         => ( K @ ( sub @ A @ ( push @ B @ M ) ) ) ) ) ) ).

thf(pushprop_lem1_gthm,definition,
    ( pushprop_lem1_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => pushprop_lem1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(pushprop_lem1_lthm,definition,
    ( pushprop_lem1_lthm
    = ( axvarcons
     => ( axclos
       => ( axshiftcons
         => ( ulamvarind
           => pushprop_lem1 ) ) ) ) ) ).

thf(pushprop_lem1v2,definition,
    ( pushprop_lem1v2
    = ( ! [P: term > $o,Q: term > $o,A: term,M: subst] :
          ( ( P @ A )
         => ( ( pushprop_p_and_p_prime @ A @ M @ P @ Q )
           => ( Q @ one ) ) ) ) ) ).

thf(pushprop_lem1v2_gthm,definition,
    ( pushprop_lem1v2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => pushprop_lem1v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(pushprop_lem1v2_lthm,definition,
    ( pushprop_lem1v2_lthm
    = ( axvarcons
     => pushprop_lem1v2 ) ) ).

thf(pushprop_lem2v2,definition,
    ( pushprop_lem2v2
    = ( ! [P: term > $o,Q: term > $o,A: term,M: subst] :
          ( ( pushprop_p_and_p_prime @ A @ M @ P @ Q )
         => ( ! [B: term] :
                ( ( var @ B )
               => ( P @ ( sub @ B @ M ) ) )
           => ! [C: term] :
                ( ( var @ C )
               => ( ( Q @ C )
                 => ( Q @ ( sub @ C @ sh ) ) ) ) ) ) ) ) ).

thf(pushprop_lem2v2_gthm,definition,
    ( pushprop_lem2v2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => pushprop_lem2v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(pushprop_lem2v2_lthm,definition,
    ( pushprop_lem2v2_lthm
    = ( axclos
     => ( axshiftcons
       => pushprop_lem2v2 ) ) ) ).

thf(pushprop_lem3v2,definition,
    ( pushprop_lem3v2
    = ( ! [P: term > $o,Q: term > $o,A: term,M: subst] :
          ( ( pushprop_p_and_p_prime @ A @ M @ P @ Q )
         => ( ! [B: term] :
                ( ( var @ B )
               => ( Q @ B ) )
           => ! [B: term] :
                ( ( var @ B )
               => ( P @ ( sub @ B @ ( push @ A @ M ) ) ) ) ) ) ) ) ).

thf(pushprop_lem3v2_lthm,definition,
    pushprop_lem3v2_lthm = pushprop_lem3v2 ).

thf(pushprop,definition,
    ( pushprop
    = ( ! [P: term > $o,A: term,M: subst] :
          ( ! [B: term] :
              ( ( var @ B )
             => ( P @ ( sub @ B @ M ) ) )
         => ( ( P @ A )
           => ! [B: term] :
                ( ( var @ B )
               => ( P @ ( sub @ B @ ( push @ A @ M ) ) ) ) ) ) ) ) ).

thf(pushprop_gthm,definition,
    ( pushprop_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => pushprop ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(pushprop_lthm_orig,definition,
    ( pushprop_lthm_orig
    = ( ulamvar1
     => ( axvarcons
       => ( axclos
         => ( axshiftcons
           => ( ulamvarind
             => pushprop ) ) ) ) ) ) ).

thf(pushprop_lthm,definition,
    ( pushprop_lthm
    = ( pushprop_lem0
     => ( ulamvar1
       => ( axvarcons
         => ( axclos
           => ( axshiftcons
             => ( ulamvarind
               => pushprop ) ) ) ) ) ) ) ).

thf(induction2lem,definition,
    ( induction2lem
    = ( ! [P: term > $o] :
          ( ! [A: term,B: term] :
              ( ( P @ A )
             => ( ( P @ B )
               => ( P @ ( ap @ A @ B ) ) ) )
         => ( ! [A: term] :
                ( ! [B: term] :
                    ( ( P @ B )
                   => ( P @ ( sub @ A @ ( push @ B @ id ) ) ) )
               => ( P @ ( lam @ A ) ) )
           => ! [A: term,M: subst] :
                ( ! [B: term] :
                    ( ( var @ B )
                   => ( P @ ( sub @ B @ M ) ) )
               => ( P @ ( sub @ A @ M ) ) ) ) ) ) ) ).

thf(induction2lem_gthm,definition,
    ( induction2lem_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => induction2lem ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(induction2lem_lthm,definition,
    ( induction2lem_lthm
    = ( axapp
     => ( axvarcons
       => ( axabs
         => ( axclos
           => ( axshiftcons
             => ( axassoc
               => ( axmap
                 => ( axidr
                   => ( induction
                     => ( pushprop
                       => induction2lem ) ) ) ) ) ) ) ) ) ) ) ).

thf(induction2,definition,
    ( induction2
    = ( ! [P: term > $o] :
          ( ! [A: term] :
              ( ( var @ A )
             => ( P @ A ) )
         => ( ! [A: term,B: term] :
                ( ( P @ A )
               => ( ( P @ B )
                 => ( P @ ( ap @ A @ B ) ) ) )
           => ( ! [A: term] :
                  ( ! [B: term] :
                      ( ( P @ B )
                     => ( P @ ( sub @ A @ ( push @ B @ id ) ) ) )
                 => ( P @ ( lam @ A ) ) )
             => ! [A: term] : ( P @ A ) ) ) ) ) ) ).

thf(induction2_gthm,definition,
    ( induction2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => induction2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(induction2_lthm,definition,
    ( induction2_lthm
    = ( axvarid
     => ( induction2lem
       => induction2 ) ) ) ).

thf(substmonoid,definition,
    ( substmonoid
    = ( ! [M: subst,N: subst,K: subst] :
          ( ( comp @ ( comp @ M @ N ) @ K )
          = ( comp @ M @ ( comp @ N @ K ) ) )
      & ! [M: subst] :
          ( ( comp @ id @ M )
          = M )
      & ! [M: subst] :
          ( ( comp @ M @ id )
          = M ) ) ) ).

thf(substmonoid_gthm,definition,
    ( substmonoid_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => substmonoid ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(substmonoid_lthm,definition,
    ( substmonoid_lthm
    = ( axidl
     => ( axassoc
       => ( axidr
         => substmonoid ) ) ) ) ).

thf(termmset,definition,
    ( termmset
    = ( ! [A: term,M: subst,N: subst] :
          ( ( sub @ ( sub @ A @ M ) @ N )
          = ( sub @ A @ ( comp @ M @ N ) ) )
      & ! [A: term] :
          ( ( sub @ A @ id )
          = A ) ) ) ).

thf(termmset_gthm,definition,
    ( termmset_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => termmset ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(termmset_lthm,definition,
    ( termmset_lthm
    = ( axvarid
     => ( axclos
       => termmset ) ) ) ).

thf(hoasap,definition,
    ( hoasap
    = ( ^ [M: subst,A: term,N: subst,B: term] : ( ap @ ( sub @ A @ N ) @ B ) ) ) ).

thf(hoaslam,definition,
    ( hoaslam
    = ( ^ [M: subst,F: subst > term > term] : ( lam @ ( F @ sh @ one ) ) ) ) ).

thf(hoasvar,definition,
    ( hoasvar
    = ( ^ [M: subst,A: term,N: subst] : ( var @ ( sub @ A @ N ) ) ) ) ).

thf(hoasapinj1,definition,
    ( hoasapinj1
    = ( ! [A: term,B: term,C: term,D: term] :
          ( ( ( hoasap @ id @ A @ id @ C )
            = ( hoasap @ id @ B @ id @ D ) )
         => ( A = B ) ) ) ) ).

thf(hoasapinj1_gthm,definition,
    ( hoasapinj1_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => hoasapinj1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasapinj1_lthm,definition,
    ( hoasapinj1_lthm
    = ( axvarid
     => ( apinj1
       => hoasapinj1 ) ) ) ).

thf(hoasapinj2,definition,
    ( hoasapinj2
    = ( ! [A: term,B: term,C: term,D: term] :
          ( ( ( hoasap @ id @ A @ id @ C )
            = ( hoasap @ id @ B @ id @ D ) )
         => ( C = D ) ) ) ) ).

thf(hoasapinj2_gthm,definition,
    ( hoasapinj2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => hoasapinj2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasapinj2_lthm,definition,
    ( hoasapinj2_lthm
    = ( apinj2
     => hoasapinj2 ) ) ).

thf(hoaslaminj,definition,
    ( hoaslaminj
    = ( ! [F: subst > term > term] :
          ( ! [M: subst,A: term,N: subst] :
              ( ( sub @ ( F @ M @ A ) @ N )
              = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
         => ! [G: subst > term > term] :
              ( ! [M: subst,A: term,N: subst] :
                  ( ( sub @ ( G @ M @ A ) @ N )
                  = ( G @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
             => ( ( ( hoaslam @ id
                    @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                  = ( hoaslam @ id
                    @ ^ [M: subst,A: term] : ( G @ M @ A ) ) )
               => ! [M: subst,A: term] :
                    ( ( F @ M @ A )
                    = ( G @ M @ A ) ) ) ) ) ) ) ).

thf(hoaslaminj_gthm,definition,
    ( hoaslaminj_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => hoaslaminj ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoaslaminj_lthm,definition,
    ( hoaslaminj_lthm
    = ( axvarcons
     => ( axshiftcons
       => ( laminj
         => hoaslaminj ) ) ) ) ).

thf(hoaslamnotap,definition,
    ( hoaslamnotap
    = ( ! [F: subst > term > term] :
          ( ! [M: subst,A: term,N: subst] :
              ( ( sub @ ( F @ M @ A ) @ N )
              = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
         => ! [A: term,B: term] :
              ( ( hoaslam @ id
                @ ^ [M: subst,C: term] : ( F @ M @ C ) )
             != ( hoasap @ id @ A @ id @ B ) ) ) ) ) ).

thf(hoaslamnotap_gthm,definition,
    ( hoaslamnotap_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => hoaslamnotap ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoaslamnotap_lthm,definition,
    ( hoaslamnotap_lthm
    = ( lamnotap
     => hoaslamnotap ) ) ).

thf(hoaslamnotvar,definition,
    ( hoaslamnotvar
    = ( ! [F: subst > term > term] :
          ( ! [M: subst,A: term,N: subst] :
              ( ( sub @ ( F @ M @ A ) @ N )
              = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
         => ~ ( hoasvar @ id
              @ ( hoaslam @ id
                @ ^ [M: subst,A: term] : ( F @ M @ A ) )
              @ id ) ) ) ) ).

thf(hoaslamnotvar_gthm,definition,
    ( hoaslamnotvar_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => hoaslamnotvar ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoaslamnotvar_lthm,definition,
    ( hoaslamnotvar_lthm
    = ( axvarid
     => ( lamnotvar
       => hoaslamnotvar ) ) ) ).

thf(hoasapnotvar,definition,
    ( hoasapnotvar
    = ( ! [A: term,B: term] :
          ~ ( hoasvar @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) ) ).

thf(hoasapnotvar_gthm,definition,
    ( hoasapnotvar_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => hoasapnotvar ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasapnotvar_lthm,definition,
    ( hoasapnotvar_lthm
    = ( axvarid
     => ( apnotvar
       => hoasapnotvar ) ) ) ).

thf(hoasinduction_p_and_p_prime,definition,
    ( hoasinduction_p_and_p_prime
    = ( ^ [P: subst > term > subst > $o,Q: term > $o] :
        ! [X: term] :
          ( ( Q @ X )
        <=> ( P @ id @ X @ id ) ) ) ) ).

thf(hoasinduction_lem0,definition,
    ( hoasinduction_lem0
    = ( ! [P: subst > term > subst > $o] :
        ? [Q: term > $o] : ( hoasinduction_p_and_p_prime @ P @ Q ) ) ) ).

thf(hoasinduction_lem0_lthm,definition,
    hoasinduction_lem0_lthm = hoasinduction_lem0 ).

thf(hoasinduction_lem1v2,definition,
    ( hoasinduction_lem1v2
    = ( ! [P: subst > term > subst > $o,Q: term > $o] :
          ( ! [M: subst,A: term,N: subst,K: subst] :
              ( ( P @ M @ A @ ( comp @ K @ N ) )
             => ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
         => ( ! [M: subst,A: term,N: subst,K: subst] :
                ( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
               => ( P @ M @ A @ ( comp @ K @ N ) ) )
           => ( ! [A: term] :
                  ( ( hoasvar @ id @ A @ id )
                 => ( P @ id @ A @ id ) )
             => ( ( hoasinduction_p_and_p_prime @ P @ Q )
               => ! [A: term] :
                    ( ( var @ A )
                   => ( Q @ A ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem1v2_gthm,definition,
    ( hoasinduction_lem1v2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => hoasinduction_lem1v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem2v2,definition,
    ( hoasinduction_lem2v2
    = ( ! [P: subst > term > subst > $o,Q: term > $o] :
          ( ! [M: subst,A: term,N: subst,K: subst] :
              ( ( P @ M @ A @ ( comp @ K @ N ) )
             => ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
         => ( ! [M: subst,A: term,N: subst,K: subst] :
                ( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
               => ( P @ M @ A @ ( comp @ K @ N ) ) )
           => ( ! [A: term,B: term] :
                  ( ( P @ id @ A @ id )
                 => ( ( P @ id @ B @ id )
                   => ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
             => ( ( hoasinduction_p_and_p_prime @ P @ Q )
               => ! [A: term,B: term] :
                    ( ( Q @ A )
                   => ( ( Q @ B )
                     => ( Q @ ( ap @ A @ B ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem2v2_gthm,definition,
    ( hoasinduction_lem2v2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => hoasinduction_lem2v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3v2_f,definition,
    ( hoasinduction_lem3v2_f
    = ( ! [B: term] :
        ? [F: subst > term > term] :
        ! [A: term,M: subst] :
          ( ( F @ M @ A )
          = ( sub @ B @ ( push @ A @ M ) ) ) ) ) ).

thf(hoasinduction_lem3v2_f_lthm,definition,
    hoasinduction_lem3v2_f_lthm = hoasinduction_lem3v2_f ).

thf(hoasinduction_lem3v2,definition,
    ( hoasinduction_lem3v2
    = ( ! [P: subst > term > subst > $o,Q: term > $o] :
          ( ! [M: subst,A: term,N: subst,K: subst] :
              ( ( P @ M @ A @ ( comp @ K @ N ) )
             => ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
         => ( ! [M: subst,A: term,N: subst,K: subst] :
                ( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
               => ( P @ M @ A @ ( comp @ K @ N ) ) )
           => ( ! [F: subst > term > term] :
                  ( ! [M: subst,A: term,N: subst] :
                      ( ( sub @ ( F @ M @ A ) @ N )
                      = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
                 => ( ! [A: term] :
                        ( ( P @ id @ A @ id )
                       => ( P @ id @ ( F @ id @ A ) @ id ) )
                   => ( P @ id
                      @ ( hoaslam @ id
                        @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                      @ id ) ) )
             => ( ( hoasinduction_p_and_p_prime @ P @ Q )
               => ! [A: term] :
                    ( ! [B: term] :
                        ( ( Q @ B )
                       => ( Q @ ( sub @ A @ ( push @ B @ id ) ) ) )
                   => ( Q @ ( lam @ A ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3v2_gthm,definition,
    ( hoasinduction_lem3v2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => hoasinduction_lem3v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3v2_lthm,definition,
    ( hoasinduction_lem3v2_lthm
    = ( axvarid
     => ( axvarshift
       => ( axclos
         => ( axmap
           => hoasinduction_lem3v2 ) ) ) ) ) ).

thf(hoasinduction_lem3v2a,definition,
    ( hoasinduction_lem3v2a
    = ( ! [P: subst > term > subst > $o,Q: term > $o] :
          ( ! [F: subst > term > term] :
              ( ! [M: subst,A: term,N: subst] :
                  ( ( sub @ ( F @ M @ A ) @ N )
                  = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
             => ( ! [A: term] :
                    ( ( P @ id @ A @ id )
                   => ( P @ id @ ( F @ id @ A ) @ id ) )
               => ( P @ id
                  @ ( hoaslam @ id
                    @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                  @ id ) ) )
         => ( ( hoasinduction_p_and_p_prime @ P @ Q )
           => ! [A: term] :
                ( ! [B: term] :
                    ( ( Q @ B )
                   => ( Q @ ( sub @ A @ ( push @ B @ id ) ) ) )
               => ( Q @ ( lam @ A ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3v2a_lthm,definition,
    ( hoasinduction_lem3v2a_lthm
    = ( hoasinduction_lem3v2_f
     => ( axvarid
       => ( axvarshift
         => ( axclos
           => ( axmap
             => hoasinduction_lem3v2a ) ) ) ) ) ) ).

thf(hoasinduction_lem1,definition,
    ( hoasinduction_lem1
    = ( ! [P: subst > term > subst > $o] :
          ( ! [M: subst,A: term,N: subst,K: subst] :
              ( ( P @ M @ A @ ( comp @ K @ N ) )
             => ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
         => ( ! [M: subst,A: term,N: subst,K: subst] :
                ( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
               => ( P @ M @ A @ ( comp @ K @ N ) ) )
           => ( ! [A: term] :
                  ( ( hoasvar @ id @ A @ id )
                 => ( P @ id @ A @ id ) )
             => ! [A: term] :
                  ( ( var @ A )
                 => ( P @ id @ A @ id ) ) ) ) ) ) ) ).

thf(hoasinduction_lem1_gthm,definition,
    ( hoasinduction_lem1_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => hoasinduction_lem1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem1_lthm,definition,
    ( hoasinduction_lem1_lthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => hoasinduction_lem1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem2,definition,
    ( hoasinduction_lem2
    = ( ! [P: subst > term > subst > $o] :
          ( ! [M: subst,A: term,N: subst,K: subst] :
              ( ( P @ M @ A @ ( comp @ K @ N ) )
             => ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
         => ( ! [M: subst,A: term,N: subst,K: subst] :
                ( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
               => ( P @ M @ A @ ( comp @ K @ N ) ) )
           => ( ! [A: term,B: term] :
                  ( ( P @ id @ A @ id )
                 => ( ( P @ id @ B @ id )
                   => ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
             => ! [A: term,B: term] :
                  ( ( P @ id @ A @ id )
                 => ( ( P @ id @ B @ id )
                   => ( P @ id @ ( ap @ A @ B ) @ id ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem2_gthm,definition,
    ( hoasinduction_lem2_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => hoasinduction_lem2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem2_lthm,definition,
    ( hoasinduction_lem2_lthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => hoasinduction_lem2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3aa,definition,
    ( hoasinduction_lem3aa
    = ( ! [P: subst > term > subst > $o] :
          ( ! [F: subst > term > term] :
              ( ! [M: subst,A: term,N: subst] :
                  ( ( sub @ ( F @ M @ A ) @ N )
                  = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
             => ( ! [A: term] :
                    ( ( P @ id @ A @ id )
                   => ( P @ id @ ( F @ id @ A ) @ id ) )
               => ( P @ id
                  @ ( hoaslam @ id
                    @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                  @ id ) ) )
         => ! [A: term] :
              ( ! [B: term] :
                  ( ( P @ id @ B @ id )
                 => ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
             => ( P @ id @ ( lam @ ( sub @ A @ ( push @ one @ sh ) ) ) @ id ) ) ) ) ) ).

thf(hoasinduction_lem3aa_lthm,definition,
    ( hoasinduction_lem3aa_lthm
    = ( axclos
     => ( axmap
       => hoasinduction_lem3aa ) ) ) ).

thf(hoasinduction_lem3aaa,definition,
    ( hoasinduction_lem3aaa
    = ( ! [P: subst > term > subst > $o] :
          ( ! [F: subst > term > term] :
              ( ? [C: term] :
                ! [M: subst,A: term,N: subst] :
                  ( ( ( sub @ ( F @ M @ A ) @ N )
                    = ( sub @ ( sub @ C @ ( push @ A @ M ) ) @ N ) )
                  & ( ( sub @ C @ ( push @ ( sub @ A @ N ) @ ( comp @ M @ N ) ) )
                    = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) ) )
             => ( ! [A: term] :
                    ( ( P @ id @ A @ id )
                   => ( P @ id @ ( F @ id @ A ) @ id ) )
               => ( P @ id
                  @ ( hoaslam @ id
                    @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                  @ id ) ) )
         => ! [A: term] :
              ( ! [B: term] :
                  ( ( P @ id @ B @ id )
                 => ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
             => ( P @ id @ ( lam @ ( sub @ A @ ( push @ one @ sh ) ) ) @ id ) ) ) ) ) ).

thf(hoasinduction_lem3,definition,
    ( hoasinduction_lem3
    = ( ! [P: subst > term > subst > $o] :
          ( ! [M: subst,A: term,N: subst,K: subst] :
              ( ( P @ M @ A @ ( comp @ K @ N ) )
             => ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
         => ( ! [M: subst,A: term,N: subst,K: subst] :
                ( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
               => ( P @ M @ A @ ( comp @ K @ N ) ) )
           => ( ! [F: subst > term > term] :
                  ( ! [M: subst,A: term,N: subst] :
                      ( ( sub @ ( F @ M @ A ) @ N )
                      = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
                 => ( ! [A: term] :
                        ( ( P @ id @ A @ id )
                       => ( P @ id @ ( F @ id @ A ) @ id ) )
                   => ( P @ id
                      @ ( hoaslam @ id
                        @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                      @ id ) ) )
             => ! [A: term] :
                  ( ! [B: term] :
                      ( ( P @ id @ B @ id )
                     => ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
                 => ( P @ id @ ( lam @ A ) @ id ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3_gthm,definition,
    ( hoasinduction_lem3_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => ( hoasinduction_lem1
                                                                         => ( hoasinduction_lem2
                                                                           => hoasinduction_lem3 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3_lthm,definition,
    ( hoasinduction_lem3_lthm
    = ( axvarid
     => ( axvarshift
       => ( hoasinduction_lem3aa
         => hoasinduction_lem3 ) ) ) ) ).

thf(hoasinduction_lem3a,definition,
    ( hoasinduction_lem3a
    = ( ! [P: subst > term > subst > $o] :
          ( ! [F: subst > term > term] :
              ( ! [M: subst,A: term,N: subst] :
                  ( ( sub @ ( F @ M @ A ) @ N )
                  = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
             => ( ! [A: term] :
                    ( ( P @ id @ A @ id )
                   => ( P @ id @ ( F @ id @ A ) @ id ) )
               => ( P @ id
                  @ ( hoaslam @ id
                    @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                  @ id ) ) )
         => ! [A: term] :
              ( ! [B: term] :
                  ( ( P @ id @ B @ id )
                 => ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
             => ( P @ id @ ( lam @ A ) @ id ) ) ) ) ) ).

thf(hoasinduction_lem3a_gthm,definition,
    ( hoasinduction_lem3a_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => ( hoasinduction_lem1
                                                                         => ( hoasinduction_lem2
                                                                           => hoasinduction_lem3a ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3a_lthm,definition,
    ( hoasinduction_lem3a_lthm
    = ( axvarid
     => ( axvarshift
       => ( hoasinduction_lem3aa
         => hoasinduction_lem3a ) ) ) ) ).

thf(hoasinduction_lem3b,definition,
    ( hoasinduction_lem3b
    = ( ! [B: term] :
        ? [F: subst > term > term] :
          ( ( sub @ B @ ( push @ one @ sh ) )
          = ( F @ sh @ one ) ) ) ) ).

thf(hoasinduction_lem3b_gthm,definition,
    ( hoasinduction_lem3b_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => ( hoasinduction_lem1
                                                                         => ( hoasinduction_lem2
                                                                           => hoasinduction_lem3b ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lem3b_lthm,definition,
    hoasinduction_lem3b_lthm = hoasinduction_lem3b ).

thf(hoasinduction,definition,
    ( hoasinduction
    = ( ! [P: subst > term > subst > $o] :
          ( ! [M: subst,A: term,N: subst,K: subst] :
              ( ( P @ M @ A @ ( comp @ K @ N ) )
             => ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
         => ( ! [M: subst,A: term,N: subst,K: subst] :
                ( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
               => ( P @ M @ A @ ( comp @ K @ N ) ) )
           => ( ! [A: term] :
                  ( ( hoasvar @ id @ A @ id )
                 => ( P @ id @ A @ id ) )
             => ( ! [A: term,B: term] :
                    ( ( P @ id @ A @ id )
                   => ( ( P @ id @ B @ id )
                     => ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
               => ( ! [F: subst > term > term] :
                      ( ! [M: subst,A: term,N: subst] :
                          ( ( sub @ ( F @ M @ A ) @ N )
                          = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
                     => ( ! [A: term] :
                            ( ( P @ id @ A @ id )
                           => ( P @ id @ ( F @ id @ A ) @ id ) )
                       => ( P @ id
                          @ ( hoaslam @ id
                            @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                          @ id ) ) )
                 => ! [A: term] : ( P @ id @ A @ id ) ) ) ) ) ) ) ) ).

thf(hoasinduction_gthm,definition,
    ( hoasinduction_gthm
    = ( axapp
     => ( axvarcons
       => ( axvarid
         => ( axabs
           => ( axclos
             => ( axidl
               => ( axshiftcons
                 => ( axassoc
                   => ( axmap
                     => ( axidr
                       => ( axvarshift
                         => ( axscons
                           => ( ulamvar1
                             => ( ulamvarsh
                               => ( ulamvarind
                                 => ( apinj1
                                   => ( apinj2
                                     => ( laminj
                                       => ( shinj
                                         => ( lamnotap
                                           => ( apnotvar
                                             => ( lamnotvar
                                               => ( induction
                                                 => ( pushprop
                                                   => ( induction2lem
                                                     => ( induction2
                                                       => ( substmonoid
                                                         => ( termmset
                                                           => ( hoasapinj1
                                                             => ( hoasapinj2
                                                               => ( hoaslaminj
                                                                 => ( hoaslamnotap
                                                                   => ( hoaslamnotvar
                                                                     => ( hoasapnotvar
                                                                       => ( hoasinduction_lem1
                                                                         => ( hoasinduction_lem2
                                                                           => ( hoasinduction_lem3
                                                                             => hoasinduction ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(hoasinduction_lthm,definition,
    ( hoasinduction_lthm
    = ( induction2
     => ( hoasinduction_lem1
       => ( hoasinduction_lem2
         => ( hoasinduction_lem3
           => hoasinduction ) ) ) ) ) ).

thf(hoasinduction_lthm_3,definition,
    ( hoasinduction_lthm_3
    = ( hoasinduction_lem0
     => ( induction2
       => ( axvarid
         => ( hoasinduction_lem3v2a
           => hoasinduction ) ) ) ) ) ).

thf(hoasinduction_no_psi_cond,definition,
    ( hoasinduction_no_psi_cond
    = ( ! [P: subst > term > subst > $o] :
          ( ! [A: term,B: term] :
              ( ( P @ id @ A @ id )
             => ( ( P @ id @ B @ id )
               => ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
         => ( ! [F: subst > term > term] :
                ( ! [M: subst,A: term,N: subst] :
                    ( ( sub @ ( F @ M @ A ) @ N )
                    = ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
               => ( ! [A: term] :
                      ( ( P @ id @ A @ id )
                     => ( P @ id @ ( F @ id @ A ) @ id ) )
                 => ( P @ id
                    @ ( hoaslam @ id
                      @ ^ [M: subst,A: term] : ( F @ M @ A ) )
                    @ id ) ) )
           => ! [A: term] : ( P @ id @ A @ id ) ) ) ) ) ).

thf(hoasinduction_no_psi_cond_lthm,definition,
    ( hoasinduction_no_psi_cond_lthm
    = ( hoasinduction_lem0
     => ( induction2
       => ( axvarid
         => ( hoasinduction_lem3v2a
           => hoasinduction_no_psi_cond ) ) ) ) ) ).

%------------------------------------------------------------------------------
